The Boogie 2 Type System: Design and Verification Condition Generation
نویسندگان
چکیده
Intermediate languages are a paradigm to separate concerns in software verification systems when bridging the gap between (realworld) programming languages and the logics understood by theorem provers. While such intermediate languages traditionally only offer rather simple type systems, this paper argues that it is both advantageous and feasible to integrate richer type systems with features like (higherranked) polymorphism and quantification over types. As a concrete solution, the paper presents the type system of the Boogie 2 language, which is used in several program verifiers. The paper gives two encodings of types and formulae in simply typed (or untyped) logic such that ordinary theorem provers and SMT solvers can be used to discharge verification conditions. Extensive empirical evidence is provided showing that the impact of the additional typing information on the verification performance is negligible.
منابع مشابه
HOL-Boogie - An Interactive Prover for the Boogie Program-Verifier
Boogie is a program verification condition generator for an imperative core language. It has front-ends for the programming languages C# and C enriched by annotations in first-order logic. Its verification conditions — constructed via a wp calculus from these annotations — are usually transferred to automated theorem provers such as Simplify or Z3. In this paper, however, we present a proofenvi...
متن کاملThe Design and Algorithms of a Verification Condition Generator
This dissertation discusses several problems loosely related, because they all involve a verification condition generator. The Boogie language is introduced; the architecture of a verification-generator is described. Then come more interesting parts. (1) Moving to a passive form representation can be seen as an automatic transformation into a pure functional language. How to formalize this tran...
متن کاملBoogie: A Modular Reusable Verifier for Object-Oriented Programs
A program verifier is a complex system that uses compiler technology, program semantics, property inference, verification-condition generation, automatic decision procedures, and a user interface. This paper describes the architecture of a state-of-the-art program verifier for object-oriented programs.
متن کاملAutomatic Verification of Advanced Object-Oriented Features: The AutoProof Approach
Static program verifiers such as Spec#, Dafny, jStar, and VeriFast define the state of the art in automated functional verification techniques. The next open challenges are to make verification tools usable even by programmers not fluent in formal techniques. This paper discusses some techniques used in AutoProof, a verification tool that translates Eiffel programs to Boogie and uses the Boogie...
متن کاملViper: A Verification Infrastructure for Permission-Based Reasoning
The automation of verification techniques based on firstorder logic specifications has benefited greatly from verification infrastructures such as Boogie and Why. These offer an intermediate language that can express diverse language features and verification techniques, as well as back-end tools such as verification condition generators. However, these infrastructures are not well suited for v...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
دوره شماره
صفحات -
تاریخ انتشار 2009